package com.hanamaki.study.day01;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.List;

public class FireFoxDriverTestNg06 {

    /* WebDriver 代表 浏览器 对象 */
    WebDriver driver;

    @BeforeClass
    public void setUp() {
        /* 1. 注册驱动的位置  */
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");

        /* 2, 注册驱动 */
        driver = new FirefoxDriver();

    }

    /**
     * 测试  selenium 中常用的 api 方法
     */
    @Test
    public void firefox() {
        /* 打开网址测试  */
        driver.get("file:///E:/testhtml/exam/House.html");
/* 1. getTitle 获取网页显示在浏览器中的标题名 */
        String title = driver.getTitle();
        System.out.println("网页的标题名为：" + title);

/* 2.  getCurrentUrl 获得 网页 当前所处的url 资源路径 */
        String currentUrl = driver.getCurrentUrl();
        System.out.println("URL资源路径为：" + currentUrl);

/* 3.  getPageSource 获得网页 源代码信息  可以通过源代码 进行断言 判断      */
        String pageSource = driver.getPageSource();
        if (pageSource.contains("Hanamaki")) {
            System.out.println("源代码中包含此信息  ：成功");
        } else {
            System.out.println("源代码中不包含此信息  ：不成功");
        }

/* 4.  getText 获得标签元素 实际显示在页面中的文本信息值        */
        WebElement element = driver.findElement(By.cssSelector("p.edit"));
        String text = element.getText();
        System.out.println("此元素 实际显示在页面中文本值为：" + text);

/* 5.  getAttribute   获得标签元素中指定属性的值     */
        String aClass = element.getAttribute("class");
        System.out.println("此元素的 class属性的值为：" + aClass);

/* 6.  getTagName 获得标签元素 的标签名       */
        String tagName = element.getTagName();
        System.out.println("此元素的 标签名为 ：" + tagName);
    }


    /**
     * 判断网页中的元素 是否 被选中
     */
    @Test
    public void isSelected() {
        driver.get("file:///E:/testhtml/exam/House.html");
        /* 通过元素定位的方式 来获取元素的 位置信息 */
        WebElement c1 = driver.findElement(By.name("c1"));
        WebElement c2 = driver.findElement(By.name("c2"));
        WebElement c3 = driver.findElement(By.name("c3"));
        WebElement c4 = driver.findElement(By.name("c4"));
        WebElement c5 = driver.findElement(By.name("c5"));

        List<WebElement> lists = new ArrayList<WebElement>();
        lists.add(c1);
        lists.add(c2);
        lists.add(c3);
        lists.add(c4);
        lists.add(c5);
        for (int i = 0; i < lists.size(); i++) {
            if (lists.get(i).isSelected()) {
                lists.get(i).click();
            } else {
                lists.get(i).click();
            }
        }

    }

    /**
     * 判断网页中的文本框或者 按钮是否已启用
     */
    @Test
    public void isEnabled() {
        driver.get("file:///E:/testhtml/exam/House.html");

        /* 判断物业名称文本框 是否已启用  */
        WebElement username = driver.findElement(By.name("username"));
        /* 如果 文本框 是默认的状态 那么就是启用的  */
//        System.out.println(username.isEnabled() == true ? "已启用" : "未启用");
        /* 如果 文本框 是只读 的状态 那么就是启用的  */
//        System.out.println(username.isEnabled() == true ? "已启用" : "未启用");
        /* 如果 文本框 是  禁用 的状态 那么就是未启用的  */
        System.out.println(username.isEnabled() == true ? "已启用" : "未启用");

    }

    /**
     * 判断网页中的元素 是否被隐藏
     */
    @Test
    public void isDisPlayed() {
        driver.get("file:///E:/testhtml/exam/House.html");

        WebElement element = driver.findElement(By.cssSelector("p.edit"));

        System.out.println(element.isDisplayed() == true ? "未隐藏" : "已隐藏");

    }


}
